import random
import string
from utils import ask
from utils.convertor import md2docx
from utils.common import preprocess_question
from dagent_llm import LLM

model = LLM(llm_server=cfg.LLM["llm_server"])

def generate_report(text):
    prompt = f"<原始内容>{text}<\原始内容>\n请你帮我按照要求生成markdown报告"
    prompt += f"\n<要求>\n1. 文档标题用#表示，例如：# 2022年第一季度销售报告"
    prompt += f"\n2. 文档二级标题用##表示，同时用中文编号表示，例如：## 一、销售额"
    prompt += f"\n3. 文档三级标题用###表示，例如：### 1.1 产品销售额"
    prompt += f"\n4. 您需要根据文档内容自己优化章节、小节划分方式和标题"
    prompt += f"\n5. 文档内容你可以进行适当补充或重写，但不要改变原文核心意思"
    prompt += f"直接给我完整文档内容"
    r = ask(prompt,history=None)
    # save to tmp file
    random_str = ''.join(random.sample(string.ascii_letters + string.digits, 8))
    with open(f"tmp/report_{random_str}.md", "w", encoding="utf-8") as f:
        f.write(r)
    # convert to docx
    md2docx(f"tmp/report_{random_str}.md", f"tmp/report_{random_str}.docx", template="assets/template.docx")
    return f"tmp/report_{random_str}.docx"


def generate_weekly_report(name,text=""):
    prompt = f"生成周报，请你给我生成{name}的周报。{text}。如果没提供给你日期你就自动该员工提取上月的所有日报以及考勤状况"
    info = preprocess_question(prompt)
    new_prompt= f"<参考信息>{info}<\参考信息>\n生成周报，请你给我生成{name}的周报，{text}，给我markdown格式的周报"
    new_prompt += f"\n<要求>\n内容至少包括：## 1. 周工作要点 ## 2. 涉及项目 ## 3. AI总结与客观评价（从工作量（40分）、工作完成质量（30分）、日报规范程度（30分）三个维度打分，满分100分。"

    new_prompt += f"直接给我完整文档内容"
    r = ask(new_prompt,history=None)
    # save to tmp file
    random_str = ''.join(random.sample(string.ascii_letters + string.digits, 8))
    with open(f"tmp/report_{random_str}.md", "w", encoding="utf-8") as f:
        f.write(r)
    # convert to docx
    md2docx(f"tmp/report_{random_str}.md", f"tmp/report_{random_str}.docx", template="assets/template.docx")
    return f"tmp/report_{random_str}.docx"


def generate_monthly_report(name,text=""):
    prompt = f"生成月报，请你给我生成{name}的月报。{text}。如果没提供给你日期你就自动该员工提取上月的所有日报以及考勤状况"
    info = preprocess_question(prompt)
    new_prompt= f"<参考信息>{info}<\参考信息>\n生成周报，请你给我生成{name}的月报，{text}，给我markdown格式的月报"
    new_prompt += f"\n<要求>\n内容至少包括：## 1. 月工作要点 ## 2. 涉及项目 ## 3. AI总结与客观评价（从工作量（40分）、工作完成质量（30分）、日报规范程度（30分）三个维度打分，满分100分。"

    new_prompt += f"直接给我完整文档内容"
    r = ask(new_prompt,history=None)
    # save to tmp file
    random_str = ''.join(random.sample(string.ascii_letters + string.digits, 8))
    with open(f"tmp/report_{random_str}.md", "w", encoding="utf-8") as f:
        f.write(r)
    # convert to docx
    md2docx(f"tmp/report_{random_str}.md", f"tmp/report_{random_str}.docx", template="assets/template.docx")
    return f"tmp/report_{random_str}.docx"




